package com.guomei.mapper.curse;

import java.math.BigDecimal;
import java.util.List;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.guomei.bean.curse.domain.DistributeRecord;
import com.guomei.bean.curse.vo.CourseDistributionStats;

import org.apache.ibatis.annotations.Param;

/**
 * 分销记录Mapper
 */
public interface DistributeRecordMapper extends BaseMapper<DistributeRecord> {
    
    /**
     * 根据学生ID查询分销记录
     */
    List<DistributeRecord> selectByStudentId(@Param("studentId") Long studentId);
    
    /**
     * 根据招生老师ID查询分销记录
     */
    List<DistributeRecord> selectByDistributorId(@Param("distributorId") Long distributorId);
    
    /**
     * 根据课程ID查询分销记录
     */
    List<DistributeRecord> selectByCourseId(@Param("courseId") Long courseId);
    
    /**
     * 根据订单ID查询分销记录
     */
    List<DistributeRecord> selectByOrderId(@Param("orderId") Long orderId);
    
    /**
     * 根据状态查询分销记录
     */
    List<DistributeRecord> selectByStatus(@Param("status") Short status);
    
    /**
     * 根据招生老师ID和状态查询分销记录
     */
    List<DistributeRecord> selectByDistributorIdAndStatus(@Param("distributorId") Long distributorId, 
                                                         @Param("status") Short status);
    
    /**
     * 统计招生老师的总分销金额
     */
    BigDecimal sumDistributeAmountByDistributorId(@Param("distributorId") Long distributorId);
    
    /**
     * 统计招生老师的总分销金额（按状态）
     */
    BigDecimal sumDistributeAmountByDistributorIdAndStatus(@Param("distributorId") Long distributorId, 
                                                          @Param("status") Short status);
    
    /**
     * 统计课程的总分销金额
     */
    BigDecimal sumDistributeAmountByCourseId(@Param("courseId") Long courseId);
    
    /**
     * 以课程为主表统计分销数据
     * 包含：分销金额、订单数量、招生老师数量
     */
    CourseDistributionStats selectCourseDistributionStats(@Param("courseId") Long courseId);
}
